package com.dkm.orproject.dkmoa.service.serviceimpl;

import com.dkm.orproject.dkmoa.dao.OaNewsMapper;
import com.dkm.orproject.dkmoa.domain.OaNews;
import com.dkm.orproject.dkmoa.service.OaNewsService;
import com.dkm.orproject.utils.utils.IdToobtainUtils;
import com.github.pagehelper.PageHelper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * @PROJECT_NAME: orproject
 * @DESCRIPTION:
 * @USER: 周佳佳
 * @DATE: 2020/8/4 16:27
 */
@Service
@Transactional(rollbackFor = Exception.class)
public class OaNewsServiceimpl implements OaNewsService {
    @Autowired
    OaNewsMapper oaNewsMapper;
    @Autowired
    IdToobtainUtils utils;

    /**
     * 新闻的查询所有方法
     * @param oaNews 新闻模型
     * @param page      当前页数
     * @param limit     显示行数
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @return 返回新闻的集合
     */
    @Override
    public List<OaNews> selectAll(OaNews oaNews, String startTime, String endTime, Integer page, Integer limit) {
        PageHelper.startPage(page,limit);
        return oaNewsMapper.selectAll(oaNews,startTime,endTime);
    }

    /**
     * 新闻的查询总行数方法
     * @param oaNews  新闻模型
     * @param startTime  开始时间
     * @param endTime  结束时间
     * @return 返回查询的总行数
     */
    @Override
    public Long rowCount(OaNews oaNews, String startTime, String endTime) {
        return oaNewsMapper.rowCount(oaNews,startTime,endTime);
    }

    /**
     * 批量删除新闻
     * @param list 新闻主键的集合
     * @return 返回删除的总行数
     */
    @Override
    public int deleteAll(List<Long> list) {
        return oaNewsMapper.deleteAll(list);
    }
    /**
     * 批量删除新闻类型接着删除新闻的方法
     * @param list 新闻类型id的集合
     * @return 删除的行数
     */
    @Override
    public int deleteTypeAll(List<Long> list) {
        return oaNewsMapper.deleteTypeAll(list);
    }
    /**
     * 删除新闻类型 后删除对应的新闻方法
     * @param oaNews 新闻对象
     * @return 返回删除的行数
     */
    @Override
    public int updateIsva(OaNews oaNews) {
        return oaNewsMapper.updateIsva(oaNews);
    }

    /**
     * 根据新闻类型id 查询新闻
     * @param pkNewsTypeId 新闻类型id
     * @return 返回新闻数据结果
     */
    @Override
    public List<OaNews> selectNewsType(Long pkNewsTypeId) {
        return oaNewsMapper.selectNewsType(pkNewsTypeId);
    }

    /**
     * 根据新闻id查询出内容
     * @param pkNewsId 新闻id
     * @return 返回新闻的模型
     */
    @Override
    public OaNews selectByPrimaryKey(Long pkNewsId) {
        return oaNewsMapper.selectByPrimaryKey(pkNewsId);
    }
    /**
     * 增加新闻的方法
     * @param record 新闻的对象
     * @return 返回增加的行数
     */
    @Override
    public int insertSelective(OaNews record) {
        record.setPkNewsId(utils.getNumberId());
        return oaNewsMapper.insertSelective(record);
    }

    /**
     * 批量逻辑删除的方法
     * @param record 新闻对象
     * @return 返回删除的行数
     */
    @Override
    public int updateByPrimaryKeySelective(OaNews record) {
        return oaNewsMapper.updateByPrimaryKeySelective(record);
    }
}
